package com.demo.qqserver.service;

import java.util.HashMap;
import java.util.stream.Collectors;

/**
 * @author gy
 * @date 2022/5/6
 * 该类用于管理和客户端通信的线程
 */
public class ManageClientsThread {
    /**
     * 定义线程集合 hashmap
     */
    private static HashMap<String, ServerConnectClientThread> hm = new HashMap<>();

    /**
     * 拿到所有的 线程对象
     * @return
     */
    public static HashMap<String, ServerConnectClientThread> getHm() {
        return hm;
    }

    /**
     * 添加线程对象到 hashmap
     */
    public static void addServerConnectClientThread(String userId, ServerConnectClientThread serverConnectClientThread) {
        hm.put(userId, serverConnectClientThread);
    }

    /**
     * 得到线程对象
     */
    public static ServerConnectClientThread getServerConnectClientThread(String userId) {
        return hm.get(userId);
    }

    /**
     * 返回所有的 userId
     */
    public static String getOnlineUsers(){
        // 另外一种写法
//        return String.join(" ", hm.keySet());
        // 流式写法，将 集合中的所有值进行拼接
        return hm.keySet().stream().collect(Collectors.joining(" "));
    }

    /**
     * 移除调退出系统的 客户端线程
     */
    public static void removeServerConnectClientThread(String userId){
        hm.remove(userId);
    }
}
